#include <stdio.h>
#include <octopus.h>

#ifdef __MINGW_H
#include <windows.h>
#endif

// PIN ist LED1
#define PIN 3

// eine sekunde pausieren
void delay_1s(void)
{
		#ifdef __MINGW_H
		_sleep (1000);
		#else
		sleep(1);
		#endif
}

int main(int argc, char *argv[])
{
  int i;
  char desc[64];
  struct octopus_context octopus;

  // octopus initialisieren
  if (!octopus_init (&octopus))
	 printf ("%s\n", octopus.error_str);

  // verbindung zum octopus aufbauen
  if (octopus_open (&octopus) < 0)
	{
		fprintf(stderr, "Fehler: %s\n", octopus.error_str);
		exit(1);
	}

  // hardware beschreibung abholen
  octopus_get_hwdesc (&octopus, desc);
  printf ("Device: %s\n", desc);

  // PIN als IO initialisieren
  if (octopus_io_init (&octopus, PIN) < 0)
	 printf ("ERROR: %s\n", octopus.error_str);

  // PIN als Ausgang setzen
  if (octopus_io_set_pin_direction_out (&octopus, PIN) < 0)
	 printf ("ERROR: %s\n", octopus.error_str);

  // 3x ...
  for (i = 0; i < 3; i++)
	{
    // PIN auf high, LED an
		if (octopus_io_set_pin (&octopus, PIN, 1) < 0)
		  printf ("ERROR: %s\n", octopus.error_str);

    delay_1s();

    // PIN auf low, LED aus
		if (octopus_io_set_pin (&octopus, PIN, 0) < 0)
		  printf ("ERROR: %s\n", octopus.error_str);

    delay_1s();
	}

  // verbindung schliessen
  if (octopus_close (&octopus) < 1)
	 printf ("ERROR: %s\n", octopus.error_str);

  return 0;
}
